//
//  GZSQLModelTool.h
//  GZSQLModelTool_Example
//
//  Created by Guo Rui on 2018/1/25.
//  Copyright © 2018年 GR. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "GZSQLModelProtocol.h"

@interface GZSQLModelTool : NSObject

/**
 根据类动态创建表

 @param cls 类名
 @param uid 数据库名
 @return YES:创建成功。反之，不成功
 */
+ (BOOL)createTable:(Class)cls uid:(NSString *)uid;


/**
 判断数据库中的表是否需要进行数据迁移

 @param cls 表所对应的数据类型
 @return YES 需要进行迁移, NO 反之
 */
+ (BOOL)isTableRequireDataMigration:(Class)cls uid:(NSString *)uid;


/**
 对表进行数据迁移

 @param cls 类名
 @param uid 数据库名
 @return YES 迁移成功.
 */
+ (BOOL)tableDataMigration:(Class)cls uid:(NSString *)uid;


/**
 保存一个模型对象，如果模型对象存在，则更新

 @param model 待操作的模型对象
 @param uid 数据库名
 @return YES 保存或更新成功
 */
+ (BOOL)saveOrUpdateModel:(id)model uid:(NSString *)uid;


/**
 删除单条记录

 @param model 带删除的对象
 @param uid 数据库名
 @return YES 删除成功
 */
+ (BOOL)deleteModel:(id)model uid:(NSString *)uid;


/**
 带条件的删除

 @param cls 待操作的类
 @param condition 条件语句, eg: score > 60
 @param uid 数据库名
 @return YES 删除成功
 */
+ (BOOL)deleteClass:(Class)cls condition:(NSString *)condition  uid:(NSString *)uid;


/**
 查询表中所有的记录

 @param cls 类
 @param uid 数据库名
 @return 对象数组
 */
+ (NSArray *)queryAllModels:(Class)cls uid:(NSString *)uid;


/**
 带条件的查询

 @param cls 类
 @param condition 条件语句, eg: score > 60
 @param uid 数据库名
 @return 对象数组
 */
+ (NSArray *)queryClass:(Class)cls condition:(NSString *)condition uid:(NSString *)uid;
@end
